package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.system.domain.BdmCart;
import com.ruoyi.system.domain.dto.BdmCartDto;
import com.ruoyi.system.domain.vo.BdmCartVo;

import java.util.List;

/**
 * 购物车Service接口
 * 
 * @author ruoyi
 * @date 2024-12-12
 */
public interface IBdmCartService  extends IService<BdmCart>
{
    /**
     * 查询购物车
     * 
     * @param id 购物车主键
     * @return 购物车
     */
    public BdmCart selectBdmCartById(Long id);

    /**
     * 查询购物车列表
     * 
     * @param bdmCart 购物车
     * @return 购物车集合
     */
    public List<BdmCart> selectBdmCartList(BdmCart bdmCart);

    /**
     * 新增购物车
     * 
     * @param bdmCart 购物车
     * @return 结果
     */
    public int insertBdmCart(BdmCart bdmCart);

    /**
     * 修改购物车
     * 
     * @param bdmCart 购物车
     * @return 结果
     */
    public int updateBdmCart(BdmCart bdmCart);

    /**
     * 批量删除购物车
     * 
     * @param ids 需要删除的购物车主键集合
     * @return 结果
     */
    public int deleteBdmCartByIds(Long[] ids);

    /**
     * 删除购物车信息
     * 
     * @param id 购物车主键
     * @return 结果
     */
    public int deleteBdmCartById(Long id);

    /**
     * 查询用户购物车
     * @param userId
     * @return
     */
    List<BdmCartVo> getUserCart(Long userId);

    /**
     * 加入购物车
     * @param dto
     * @return
     */
    boolean saveUserCart(BdmCartDto dto);

    /**
     * 增加购物车商品数量
     * @param dto
     * @return
     */
    boolean plusUserCartNumber(BdmCartDto dto);

    /**
     * 减少购物车商品数量
     * @param dto
     * @return
     */
    boolean reduceUserCartNumber(BdmCartDto dto);

    /**
     * 清空购物车商品
     * @param userId
     * @return
     */
    boolean emptyUserCart(Long userId);
}
